'''原材料'''
import logging
from redis import StrictRedis


#创建一个类配置文件
class Config(object):
    """配置文件的加载"""
    SECRET_KEY = "q7pBNcWPgmF6BqB6b5VICF7z7pI+90o0O4CaJsFGjzRsYiya9SEgUDytXvzFsIaR"

    DEBUG = True

    '''配置数据库'''
    SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/python28_html"
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    '''设置Redis数据库'''
    REDIS_HOST = '127.0.0.1'
    REDIS_PORT = 6379

    '''将session数据写入到redis数据库中'''
    SESSION_TYPE = 'redis'
    SESSION_REDIS = StrictRedis(host=REDIS_HOST, port=REDIS_PORT)
    SESSION_USE_SIGNER = True
    PERMANENT_SESSION_LIFETIME = 86400

class DevelopmentConfig(Config):
    """开发环境下的配置：项目开发中"""
    pass # 开发环境的配置和父类基本一致，所以pass

    # 开发环境下的日志等级
    LEVEL_LOG = logging.DEBUG


class ProductionConfig(Config):
    """生产环境下的配置：项目上线后"""

    # 关闭调试模式
    DEBUG = False
    # 指定生产环境下的数据库
    SQLALCHEMY_DATABASE_URI = 'mysql://root:mysql@127.0.0.1:3306/python28_html_28'

    # 生产环境下的日志等级
    LEVEL_LOG = logging.ERROR


class UnittestConfig(Config):
    """开发环境下的配置"""

    # 开启测试模式
    TESTING = True
    # 指定测试数据库
    SQLALCHEMY_DATABASE_URI = 'mysql://root:mysql@127.0.0.1:3306/python28_html_28'
    # 测试环境下的日志等级
    LEVEL_LOG = logging.DEBUG


# 准备工厂方法create_app(参数)的原材料
configs = {
    'dev':DevelopmentConfig,
    'pro':ProductionConfig,
    'unit':UnittestConfig
}